using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using database;
using objetos;

namespace dados
{
	#region TB_VEICULO
	/// <summary>
	/// This object represents the properties and methods of a TB_VEICULO.
	/// </summary>
	public class DAL_TB_VEICULO
	{		
	
		/// <summary>
		/// Incluir via aplicacao
		/// </summary>	
		public int Incluir(OBJ_TB_VEICULO obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				DataSet ds = new DataSet();
				List<string> lista = new List<string>();


                db.CreateParameter("@id_cadastro", SqlDbType.Int, obj.id_cadastro);
                lista.Add("@id_cadastro");		
				db.CreateParameter("@id_marca", SqlDbType.Int, obj.id_marca);				
				lista.Add("@id_marca");				
				db.CreateParameter("@id_modelo", SqlDbType.Int, obj.id_modelo);				
				lista.Add("@id_modelo");				
				db.CreateParameter("@id_categoria", SqlDbType.Int, obj.id_categoria);				
				lista.Add("@id_categoria");				
				db.CreateParameter("@id_tipo", SqlDbType.Int, obj.id_tipo);				
				lista.Add("@id_tipo");				
				db.CreateParameter("@id_especie", SqlDbType.Int, obj.id_especie);				
				lista.Add("@id_especie");				
				db.CreateParameter("@id_combustivel", SqlDbType.Int, obj.id_combustivel);				
				lista.Add("@id_combustivel");				
				db.CreateParameter("@id_natureza_restricao", SqlDbType.Int, obj.id_natureza_restricao);				
				lista.Add("@id_natureza_restricao");				
				db.CreateParameter("@id_cor", SqlDbType.Int, obj.id_cor);				
				lista.Add("@id_cor");				
				db.CreateParameter("@id_tracao", SqlDbType.Int, obj.id_tracao);				
				lista.Add("@id_tracao");				
				db.CreateParameter("@id_cabine", SqlDbType.Int, obj.id_cabine);				
				lista.Add("@id_cabine");				
				db.CreateParameter("@id_condicao", SqlDbType.Int, obj.id_condicao);				
				lista.Add("@id_condicao");				
				db.CreateParameter("@placa", SqlDbType.VarChar, obj.placa);				
				lista.Add("@placa");				
				db.CreateParameter("@chassi", SqlDbType.VarChar, obj.chassi);				
				lista.Add("@chassi");				
				db.CreateParameter("@id_uf", SqlDbType.Int, obj.id_uf);				
				lista.Add("@id_uf");				
				db.CreateParameter("@km", SqlDbType.VarChar, obj.km);				
				lista.Add("@km");
                db.CreateParameter("@ano_fabricacao", SqlDbType.Int, obj.ano_fabricacao);
                lista.Add("@ano_fabricacao");
                db.CreateParameter("@modelo_fabricacao", SqlDbType.Int, obj.modelo_fabricacao);
                lista.Add("@modelo_fabricacao");				
				db.CreateParameter("@id_usuario", SqlDbType.Int, obj.id_usuario);				
				lista.Add("@id_usuario");				
				db.CreateParameter("@dt_cadastro", SqlDbType.DateTime, obj.dt_cadastro);				
				lista.Add("@dt_cadastro");				
				db.CreateParameter("@dt_atualizacao", SqlDbType.DateTime, obj.dt_atualizacao);				
				lista.Add("@dt_atualizacao");				
				db.CreateParameter("@dt_checkin", SqlDbType.DateTime, obj.dt_checkin);				
				lista.Add("@dt_checkin");				
	
				string query = String.Format("Insert Into tb_veiculo ({0}) Values ({1}); SELECT SCOPE_IDENTITY()",  string.Join(",",lista.ToArray()).ToString().Replace("@", ""), string.Join(",",lista.ToArray()).ToString());
				ds = db.ExecuteQuery(query);
				
				return Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
			}
			catch (Exception)
       		{
            	throw;
        	}
		}
		
		/// <summary>
		/// Update via aplicacao
		/// </summary>			
		public void Alterar(OBJ_TB_VEICULO obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				List<string> lista = new List<string>();
	
				db.CreateParameter("@id", SqlDbType.Int, obj.id);


                db.CreateParameter("@id_cadastro", SqlDbType.Int, obj.id_cadastro);
                lista.Add("id_cadastro = @id_cadastro");	                
				db.CreateParameter("@id_marca", SqlDbType.Int, obj.id_marca);
				lista.Add("id_marca = @id_marca");
				db.CreateParameter("@id_modelo", SqlDbType.Int, obj.id_modelo);
				lista.Add("id_modelo = @id_modelo");
				db.CreateParameter("@id_categoria", SqlDbType.Int, obj.id_categoria);
				lista.Add("id_categoria = @id_categoria");
				db.CreateParameter("@id_tipo", SqlDbType.Int, obj.id_tipo);
				lista.Add("id_tipo = @id_tipo");
				db.CreateParameter("@id_especie", SqlDbType.Int, obj.id_especie);
				lista.Add("id_especie = @id_especie");
				db.CreateParameter("@id_combustivel", SqlDbType.Int, obj.id_combustivel);
				lista.Add("id_combustivel = @id_combustivel");
				db.CreateParameter("@id_natureza_restricao", SqlDbType.Int, obj.id_natureza_restricao);
				lista.Add("id_natureza_restricao = @id_natureza_restricao");
				db.CreateParameter("@id_cor", SqlDbType.Int, obj.id_cor);
				lista.Add("id_cor = @id_cor");
				db.CreateParameter("@id_tracao", SqlDbType.Int, obj.id_tracao);
				lista.Add("id_tracao = @id_tracao");
				db.CreateParameter("@id_cabine", SqlDbType.Int, obj.id_cabine);
				lista.Add("id_cabine = @id_cabine");
				db.CreateParameter("@id_condicao", SqlDbType.Int, obj.id_condicao);
				lista.Add("id_condicao = @id_condicao");
				db.CreateParameter("@placa", SqlDbType.VarChar, obj.placa);
				lista.Add("placa = @placa");
				db.CreateParameter("@chassi", SqlDbType.VarChar, obj.chassi);
				lista.Add("chassi = @chassi");
				db.CreateParameter("@id_uf", SqlDbType.Int, obj.id_uf);
				lista.Add("id_uf = @id_uf");
				db.CreateParameter("@km", SqlDbType.VarChar, obj.km);
				lista.Add("km = @km");
                db.CreateParameter("@ano_fabricacao", SqlDbType.Int, obj.ano_fabricacao);
                lista.Add("ano_fabricacao = @ano_fabricacao");
                db.CreateParameter("@modelo_fabricacao", SqlDbType.Int, obj.modelo_fabricacao);
                lista.Add("modelo_fabricacao = @modelo_fabricacao");
				db.CreateParameter("@id_usuario", SqlDbType.Int, obj.id_usuario);
				lista.Add("id_usuario = @id_usuario");
				db.CreateParameter("@dt_cadastro", SqlDbType.DateTime, obj.dt_cadastro);
				lista.Add("dt_cadastro = @dt_cadastro");
				db.CreateParameter("@dt_atualizacao", SqlDbType.DateTime, obj.dt_atualizacao);
				lista.Add("dt_atualizacao = @dt_atualizacao");
				db.CreateParameter("@dt_checkin", SqlDbType.DateTime, obj.dt_checkin);
				lista.Add("dt_checkin = @dt_checkin");
	
				string query = String.Format("Update TB_VEICULO Set {0} Where id = @id", string.Join(",",lista.ToArray()).ToString());
				db.ExecuteQuery(query);
			}
			catch (Exception)
       		{
            	throw;
        	}
		}	
		
		/// <summary>
		/// Delete viaaplicacao
		/// </summary>	
		public void Excluir(OBJ_TB_VEICULO obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				StringBuilder queryParameters = new StringBuilder();
				db.CreateParameter("@id", SqlDbType.Int, obj.id);
		
				string query = "Delete tb_veiculo Where id = @id";			
				db.ExecuteQuery(query);
			}
			catch (Exception)
       		{
            	throw;
        	}
		}
	
	
		/// <summary>
		/// Lista objeto
		/// </summary>						
		public List<OBJ_TB_VEICULO> SelecionarLista()
    	{
        	try
        	{
				DAO_DATABASE db = new DAO_DATABASE();
				List<OBJ_TB_VEICULO> lista = new List<OBJ_TB_VEICULO>();
				OBJ_TB_VEICULO obj = null;
				DataTable dt = new DataTable();
				DataSet ds = new DataSet();
				StringBuilder sb = new StringBuilder();

                sb.Append("SELECT     tb_veiculo.id,  tb_veiculo.id_cadastro, tb_veiculo.id_marca, tb_veiculo.id_modelo, tb_veiculo.id_categoria, tb_cadastro.nome, tb_cadastro.cnpj_cpf, tb_veiculo.id_tipo, tb_veiculo.id_especie, tb_veiculo.id_combustivel, ");
                sb.Append(" tb_veiculo.id_natureza_restricao, tb_veiculo.id_cor, tb_veiculo.id_tracao, tb_veiculo.id_cabine, tb_veiculo.id_condicao, tb_veiculo.placa, tb_veiculo.chassi, ");
                sb.Append(" tb_veiculo.id_uf, tb_veiculo.km,  tb_veiculo.ano_fabricacao,  tb_veiculo.modelo_fabricacao, tb_veiculo.id_usuario, tb_veiculo.dt_cadastro, tb_veiculo.dt_atualizacao, tb_veiculo.id_usuario_checkin, tb_veiculo.dt_checkin, ");
                sb.Append(" tb_veiculo_cabine.desc_veiculo_cabine,tb_veiculo_categoria.desc_veiculo_categoria , tb_veiculo_combustivel.desc_veiculo_combustivel, tb_veiculo_condicao.desc_veiculo_condicao, ");
                sb.Append(" tb_veiculo_especie.desc_veiculo_especie, tb_veiculo_marca.desc_veiculo_marca, tb_veiculo_modelo.desc_veiculo_modelo, tb_veiculo_tracao.desc_veiculo_tracao, ");
                sb.Append(" tb_veiculo_natureza_restricao.desc_natureza_restricao, tb_veiculo_tipo.desc_veiculo_tipo");
                sb.Append(" FROM  tb_veiculo INNER JOIN");
                sb.Append(" tb_cadastro ON tb_veiculo.id_cadastro = tb_cadastro.id INNER JOIN");
                sb.Append(" tb_veiculo_categoria ON tb_veiculo.id_categoria = tb_veiculo_categoria.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_tipo ON tb_veiculo.id_tipo = tb_veiculo_tipo.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_natureza_restricao ON tb_veiculo.id_natureza_restricao = tb_veiculo_natureza_restricao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_tracao ON tb_veiculo.id_tracao = tb_veiculo_tracao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_modelo ON tb_veiculo.id_modelo = tb_veiculo_modelo.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_marca ON tb_veiculo.id_marca = tb_veiculo_marca.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_especie ON tb_veiculo.id_especie = tb_veiculo_especie.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_condicao ON tb_veiculo.id_condicao = tb_veiculo_condicao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_combustivel ON tb_veiculo.id_combustivel = tb_veiculo_combustivel.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_cabine ON tb_veiculo.id_cabine = tb_veiculo_cabine.id");
			
        
	            ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					
					foreach (DataRow dr in dt.Rows)
					{											
						obj = new OBJ_TB_VEICULO();
						Set(obj,dr);
						lista.Add(obj);
		
					}
				}
				return lista;
        	}
        	catch (Exception)
       		{
            	throw;
        	}

    	}
		
		/// <summary>
		/// Set Objeto
		/// </summary>	
		private void Set(OBJ_TB_VEICULO obj,DataRow dr)
		{
			obj.id = Convert.ToInt32(dr["id"].ToString());
            obj.id_cadastro = Convert.ToInt32(dr["id_cadastro"].ToString());
			obj.id_marca = Convert.ToInt32(dr["id_marca"].ToString()) ;	
			obj.id_modelo = Convert.ToInt32(dr["id_modelo"].ToString()) ;	
			obj.id_categoria = Convert.ToInt32(dr["id_categoria"].ToString()) ;	
			obj.id_tipo = Convert.ToInt32(dr["id_tipo"].ToString()) ;	
			obj.id_especie = Convert.ToInt32(dr["id_especie"].ToString()) ;	
			obj.id_combustivel = Convert.ToInt32(dr["id_combustivel"].ToString()) ;	
			obj.id_natureza_restricao = Convert.ToInt32(dr["id_natureza_restricao"].ToString()) ;	
			obj.id_cor = Convert.ToInt32(dr["id_cor"].ToString()) ;	
			obj.id_tracao = Convert.ToInt32(dr["id_tracao"].ToString()) ;	
			obj.id_cabine = Convert.ToInt32(dr["id_cabine"].ToString()) ;	
			obj.id_condicao = Convert.ToInt32(dr["id_condicao"].ToString()) ;	
			obj.placa = dr["placa"] == DBNull.Value ?  string.Empty : dr["placa"].ToString() ;
			obj.chassi = dr["chassi"] == DBNull.Value ?  string.Empty : dr["chassi"].ToString() ;
			obj.id_uf = Convert.ToInt32(dr["id_uf"].ToString()) ;	
			obj.km = dr["km"] == DBNull.Value ?  string.Empty : dr["km"].ToString() ;
            obj.ano_fabricacao = dr["ano_fabricacao"] == DBNull.Value ? (int?)null : Convert.ToInt32(dr["ano_fabricacao"].ToString());
            obj.modelo_fabricacao = dr["modelo_fabricacao"] == DBNull.Value ? (int?)null : Convert.ToInt32(dr["modelo_fabricacao"].ToString());
			obj.id_usuario = Convert.ToInt32(dr["id_usuario"].ToString()) ;	
			obj.dt_cadastro = dr["dt_cadastro"] == DBNull.Value ? (DateTime?)null :  Convert.ToDateTime(dr["dt_cadastro"].ToString()) ;						
			obj.dt_atualizacao = dr["dt_atualizacao"] == DBNull.Value ? (DateTime?)null :  Convert.ToDateTime(dr["dt_atualizacao"].ToString()) ;						
			obj.dt_checkin = dr["dt_checkin"] == DBNull.Value ? (DateTime?)null :  Convert.ToDateTime(dr["dt_checkin"].ToString()) ;
			
		}						
				
		/// <summary>
		/// Selecionar Objeto Por ID
		/// </summary>	
		public OBJ_TB_VEICULO SelecionarObjetoPorId(int id)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				OBJ_TB_VEICULO obj = new OBJ_TB_VEICULO();
				DataSet ds = new DataSet();				
				DataTable dt = new DataTable();
				db.CreateParameter("@id", SqlDbType.Int, id);
                StringBuilder sb = new StringBuilder();
                sb.Append("SELECT     tb_veiculo.id, tb_veiculo.id_cadastro, tb_veiculo.id_marca, tb_veiculo.id_modelo, tb_veiculo.id_categoria, tb_cadastro.nome, tb_cadastro.cnpj_cpf, tb_veiculo.id_tipo, tb_veiculo.id_especie, tb_veiculo.id_combustivel, ");
                sb.Append(" tb_veiculo.id_natureza_restricao, tb_veiculo.id_cor, tb_veiculo.id_tracao, tb_veiculo.id_cabine, tb_veiculo.id_condicao, tb_veiculo.placa, tb_veiculo.chassi, ");
                sb.Append(" tb_veiculo.id_uf, tb_veiculo.km, tb_veiculo.ano_fabricacao,  tb_veiculo.modelo_fabricacao, tb_veiculo.id_usuario, tb_veiculo.dt_cadastro, tb_veiculo.dt_atualizacao, tb_veiculo.id_usuario_checkin, tb_veiculo.dt_checkin, ");
                sb.Append(" tb_veiculo_cabine.desc_veiculo_cabine, tb_veiculo_categoria.desc_veiculo_categoria , tb_veiculo_combustivel.desc_veiculo_combustivel, tb_veiculo_condicao.desc_veiculo_condicao, ");
                sb.Append(" tb_veiculo_especie.desc_veiculo_especie, tb_veiculo_marca.desc_veiculo_marca, tb_veiculo_modelo.desc_veiculo_modelo, tb_veiculo_tracao.desc_veiculo_tracao, ");
                sb.Append(" tb_veiculo_natureza_restricao.desc_natureza_restricao, tb_veiculo_tipo.desc_veiculo_tipo");
                sb.Append(" FROM  tb_veiculo INNER JOIN");
                sb.Append(" tb_cadastro ON tb_veiculo.id_cadastro = tb_cadastro.id INNER JOIN");
                sb.Append(" tb_veiculo_categoria ON tb_veiculo.id_categoria = tb_veiculo_categoria.id LEFT OUTER JOIN");                
                sb.Append(" tb_veiculo_tipo ON tb_veiculo.id_tipo = tb_veiculo_tipo.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_natureza_restricao ON tb_veiculo.id_natureza_restricao = tb_veiculo_natureza_restricao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_tracao ON tb_veiculo.id_tracao = tb_veiculo_tracao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_modelo ON tb_veiculo.id_modelo = tb_veiculo_modelo.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_marca ON tb_veiculo.id_marca = tb_veiculo_marca.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_especie ON tb_veiculo.id_especie = tb_veiculo_especie.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_condicao ON tb_veiculo.id_condicao = tb_veiculo_condicao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_combustivel ON tb_veiculo.id_combustivel = tb_veiculo_combustivel.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_cabine ON tb_veiculo.id_cabine = tb_veiculo_cabine.id");
                sb.Append(" Where tb_veiculo.id = @id");
				ds = db.ExecuteQuery(sb.ToString());				
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					
					foreach (DataRow dr in dt.Rows)
                	{
						obj = new OBJ_TB_VEICULO();
						Set(obj,dr);																			
					}
					return obj;
					
				}
				else
				{
					return null;	
				}			
			}
			catch (Exception)
       		{
            	throw;
        	}
			
		}
					
		
		
		/// <summary>
		/// Lista objeto Parametro Where OrderBy
		/// </summary>							
		public List<OBJ_TB_VEICULO> SelecionarLista(String Where, String OrderBy)
    	{
        	try
        	{
				DAO_DATABASE db = new DAO_DATABASE();
				OBJ_TB_VEICULO obj = null;
				DataSet ds = new DataSet();
				DataTable dt = new DataTable();
				List<OBJ_TB_VEICULO> lista = new List<OBJ_TB_VEICULO>();
				
				StringBuilder sb = new StringBuilder();
				db.CreateParameter("@Where",SqlDbType.VarChar, Where );
				db.CreateParameter("@OrderBy", SqlDbType.VarChar, OrderBy );

                sb.Append("SELECT     tb_veiculo.id, tb_veiculo.id_cadastro, tb_veiculo.id_marca, tb_veiculo.id_modelo, tb_veiculo.id_categoria, tb_cadastro.nome, tb_cadastro.cnpj_cpf, tb_veiculo.id_tipo, tb_veiculo.id_especie, tb_veiculo.id_combustivel, ");
                sb.Append(" tb_veiculo.id_natureza_restricao, tb_veiculo.id_cor, tb_veiculo.id_tracao, tb_veiculo.id_cabine, tb_veiculo.id_condicao, tb_veiculo.placa, tb_veiculo.chassi, ");
                sb.Append(" tb_veiculo.id_uf, tb_veiculo.km, tb_veiculo.ano_fabricacao,  tb_veiculo.modelo_fabricacao, tb_veiculo.id_usuario, tb_veiculo.dt_cadastro, tb_veiculo.dt_atualizacao, tb_veiculo.id_usuario_checkin, tb_veiculo.dt_checkin, ");
                sb.Append(" tb_veiculo_cabine.desc_veiculo_cabine, tb_veiculo_categoria.desc_veiculo_categoria , tb_veiculo_combustivel.desc_veiculo_combustivel, tb_veiculo_condicao.desc_veiculo_condicao, ");
                sb.Append(" tb_veiculo_especie.desc_veiculo_especie, tb_veiculo_marca.desc_veiculo_marca, tb_veiculo_modelo.desc_veiculo_modelo, tb_veiculo_tracao.desc_veiculo_tracao, ");
                sb.Append(" tb_veiculo_natureza_restricao.desc_natureza_restricao, tb_veiculo_tipo.desc_veiculo_tipo");
                sb.Append(" FROM  tb_veiculo INNER JOIN");
                sb.Append(" tb_cadastro ON tb_veiculo.id_cadastro = tb_cadastro.id INNER JOIN");
                sb.Append(" tb_veiculo_categoria ON tb_veiculo.id_categoria = tb_veiculo_categoria.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_tipo ON tb_veiculo.id_tipo = tb_veiculo_tipo.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_natureza_restricao ON tb_veiculo.id_natureza_restricao = tb_veiculo_natureza_restricao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_tracao ON tb_veiculo.id_tracao = tb_veiculo_tracao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_modelo ON tb_veiculo.id_modelo = tb_veiculo_modelo.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_marca ON tb_veiculo.id_marca = tb_veiculo_marca.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_especie ON tb_veiculo.id_especie = tb_veiculo_especie.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_condicao ON tb_veiculo.id_condicao = tb_veiculo_condicao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_combustivel ON tb_veiculo.id_combustivel = tb_veiculo_combustivel.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_cabine ON tb_veiculo.id_cabine = tb_veiculo_cabine.id");
				if(Where != string.Empty)				
				sb.Append(string.Format(" Where {0} ",Where));
				if(OrderBy != string.Empty)
				sb.Append(string.Format(" Order by {0}",OrderBy));
				
				ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					foreach (DataRow dr in dt.Rows)
					{						
						obj = new OBJ_TB_VEICULO();
						Set(obj,dr);			
						lista.Add(obj);
					}
				}
				return lista;
        	}
        	catch (Exception)
       		{
            	throw;
        	}

    	}

		
		public DataSet Selecionar(String Where, String OrderBy, int PageIndex, int PageSize )
		{
				DAO_DATABASE db = new DAO_DATABASE();
				DataSet ds = new DataSet();
				
				StringBuilder sb = new StringBuilder();

                PageIndex = PageSize * PageIndex;
                PageSize = PageIndex + PageSize;
				
		      if (OrderBy == string.Empty) OrderBy = "tb_veiculo.id";

            	sb.Append("SELECT * FROM ");
            	sb.Append(string.Format(" (SELECT ROW_NUMBER() OVER (ORDER BY {0}) AS RowNumber,",OrderBy));
                sb.Append(" tb_veiculo.id, tb_veiculo.id_cadastro, tb_veiculo.id_marca, tb_veiculo.id_modelo, tb_veiculo.id_categoria, tb_cadastro.nome, tb_cadastro.cnpj_cpf, tb_veiculo.id_tipo, tb_veiculo.id_especie, tb_veiculo.id_combustivel, ");
                sb.Append(" tb_veiculo.id_natureza_restricao, tb_veiculo.id_cor, tb_veiculo.id_tracao, tb_veiculo.id_cabine, tb_veiculo.id_condicao, tb_veiculo.placa, tb_veiculo.chassi, ");
                sb.Append(" tb_veiculo.id_uf, tb_veiculo.km, tb_veiculo.ano_fabricacao,  tb_veiculo.modelo_fabricacao, tb_veiculo.id_usuario, tb_veiculo.dt_cadastro, tb_veiculo.dt_atualizacao, tb_veiculo.id_usuario_checkin, tb_veiculo.dt_checkin, ");
                sb.Append(" tb_veiculo_cabine.desc_veiculo_cabine, tb_veiculo_categoria.desc_veiculo_categoria ,tb_veiculo_combustivel.desc_veiculo_combustivel, tb_veiculo_condicao.desc_veiculo_condicao, ");
                sb.Append(" tb_veiculo_especie.desc_veiculo_especie, tb_veiculo_marca.desc_veiculo_marca, tb_veiculo_modelo.desc_veiculo_modelo, tb_veiculo_tracao.desc_veiculo_tracao, ");
                sb.Append(" tb_veiculo_natureza_restricao.desc_natureza_restricao, tb_veiculo_tipo.desc_veiculo_tipo");
                sb.Append(" FROM  tb_veiculo INNER JOIN");
                sb.Append(" tb_cadastro ON tb_veiculo.id_cadastro = tb_cadastro.id INNER JOIN");
                sb.Append(" tb_veiculo_categoria ON tb_veiculo.id_categoria = tb_veiculo_categoria.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_tipo ON tb_veiculo.id_tipo = tb_veiculo_tipo.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_natureza_restricao ON tb_veiculo.id_natureza_restricao = tb_veiculo_natureza_restricao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_tracao ON tb_veiculo.id_tracao = tb_veiculo_tracao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_modelo ON tb_veiculo.id_modelo = tb_veiculo_modelo.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_marca ON tb_veiculo.id_marca = tb_veiculo_marca.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_especie ON tb_veiculo.id_especie = tb_veiculo_especie.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_condicao ON tb_veiculo.id_condicao = tb_veiculo_condicao.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_combustivel ON tb_veiculo.id_combustivel = tb_veiculo_combustivel.id LEFT OUTER JOIN");
                sb.Append(" tb_veiculo_cabine ON tb_veiculo.id_cabine = tb_veiculo_cabine.id");
				if (Where != string.Empty)
				{
					sb.Append(string.Format(" WHERE {0}", Where));
				}
				sb.Append(" ) query  ");
				sb.Append(string.Format(" WHERE RowNumber BETWEEN {0} + 1 and {1}; ",PageIndex,PageSize));

            	sb.Append("SELECT count(*) FROM tb_veiculo");
				if (Where != string.Empty)
				{
					sb.Append(string.Format(" WHERE {0}", Where));
				}
				ds = db.ExecuteQuery(sb.ToString());
				
				if (!db.DataSetIsEmpty(ds))
            	{
                publico.PUB_PAGINACAO.CalcularTotalDePaginas(Convert.ToDecimal(ds.Tables[1].Rows[0][0].ToString()));
            	}

				
            	return ds;
								
		}
				
								
		public DataSet Selecionar(String Where, String OrderBy)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();

            sb.Append("SELECT     tb_veiculo.id, tb_veiculo.id_cadastro, tb_veiculo.id_marca, tb_veiculo.id_modelo, tb_veiculo.id_categoria, tb_cadastro.nome, tb_cadastro.cnpj_cpf, tb_veiculo.id_tipo, tb_veiculo.id_especie, tb_veiculo.id_combustivel, ");
            sb.Append(" tb_veiculo.id_natureza_restricao, tb_veiculo.id_cor, tb_veiculo.id_tracao, tb_veiculo.id_cabine, tb_veiculo.id_condicao, tb_veiculo.placa, tb_veiculo.chassi, ");
            sb.Append(" tb_veiculo.id_uf, tb_veiculo.km, tb_veiculo.ano_fabricacao,  tb_veiculo.modelo_fabricacao, tb_veiculo.id_usuario, tb_veiculo.dt_cadastro, tb_veiculo.dt_atualizacao, tb_veiculo.id_usuario_checkin, tb_veiculo.dt_checkin, ");
            sb.Append(" tb_veiculo_cabine.desc_veiculo_cabine, tb_veiculo_categoria.desc_veiculo_categoria , tb_veiculo_combustivel.desc_veiculo_combustivel, tb_veiculo_condicao.desc_veiculo_condicao, ");
            sb.Append(" tb_veiculo_especie.desc_veiculo_especie, tb_veiculo_marca.desc_veiculo_marca, tb_veiculo_modelo.desc_veiculo_modelo, tb_veiculo_tracao.desc_veiculo_tracao, ");
            sb.Append(" tb_veiculo_natureza_restricao.desc_natureza_restricao, tb_veiculo_tipo.desc_veiculo_tipo");
            sb.Append(" FROM  tb_veiculo INNER JOIN");
            sb.Append(" tb_cadastro ON tb_veiculo.id_cadastro = tb_cadastro.id INNER JOIN ");
            sb.Append(" tb_veiculo_categoria ON tb_veiculo.id_categoria = tb_veiculo_categoria.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_tipo ON tb_veiculo.id_tipo = tb_veiculo_tipo.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_natureza_restricao ON tb_veiculo.id_natureza_restricao = tb_veiculo_natureza_restricao.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_tracao ON tb_veiculo.id_tracao = tb_veiculo_tracao.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_modelo ON tb_veiculo.id_modelo = tb_veiculo_modelo.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_marca ON tb_veiculo.id_marca = tb_veiculo_marca.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_especie ON tb_veiculo.id_especie = tb_veiculo_especie.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_condicao ON tb_veiculo.id_condicao = tb_veiculo_condicao.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_combustivel ON tb_veiculo.id_combustivel = tb_veiculo_combustivel.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_cabine ON tb_veiculo.id_cabine = tb_veiculo_cabine.id");
            if (Where != string.Empty)
            {
                db.CreateParameter("@Where", SqlDbType.VarChar, Where);
                sb.Append(string.Format(" Where  {0}",Where));
            }

            if (OrderBy != string.Empty)
            {
                db.CreateParameter("@OrderBy", SqlDbType.VarChar, OrderBy);
                sb.Append(string.Format(" Order By {0}", OrderBy));
            }

            ds = db.ExecuteQuery(sb.ToString());
            return ds;
        }		
		
		public DataSet Selecionar()
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();

            sb.Append("SELECT     tb_veiculo.id, tb_veiculo.id_cadastro, tb_veiculo.id_marca, tb_veiculo.id_modelo, tb_veiculo.id_categoria, tb_cadastro.nome, tb_cadastro.cnpj_cpf, tb_veiculo.id_tipo, tb_veiculo.id_especie, tb_veiculo.id_combustivel, ");
            sb.Append(" tb_veiculo.id_natureza_restricao, tb_veiculo.id_cor, tb_veiculo.id_tracao, tb_veiculo.id_cabine, tb_veiculo.id_condicao, tb_veiculo.placa, tb_veiculo.chassi, ");
            sb.Append(" tb_veiculo.id_uf, tb_veiculo.km, tb_veiculo.ano_fabricacao,  tb_veiculo.modelo_fabricacao, tb_veiculo.id_usuario, tb_veiculo.dt_cadastro, tb_veiculo.dt_atualizacao, tb_veiculo.id_usuario_checkin, tb_veiculo.dt_checkin, ");
            sb.Append(" tb_veiculo_cabine.desc_veiculo_cabine, tb_veiculo_categoria.desc_veiculo_categoria , tb_veiculo_combustivel.desc_veiculo_combustivel, tb_veiculo_condicao.desc_veiculo_condicao, ");
            sb.Append(" tb_veiculo_especie.desc_veiculo_especie, tb_veiculo_marca.desc_veiculo_marca, tb_veiculo_modelo.desc_veiculo_modelo, tb_veiculo_tracao.desc_veiculo_tracao, ");
            sb.Append(" tb_veiculo_natureza_restricao.desc_natureza_restricao, tb_veiculo_tipo.desc_veiculo_tipo");
            sb.Append(" FROM  tb_veiculo INNER JOIN");
            sb.Append(" tb_cadastro ON tb_veiculo.id_cadastro = tb_cadastro.id INNER JOIN");
            sb.Append(" tb_veiculo_categoria ON tb_veiculo.id_categoria = tb_veiculo_categoria.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_tipo ON tb_veiculo.id_tipo = tb_veiculo_tipo.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_natureza_restricao ON tb_veiculo.id_natureza_restricao = tb_veiculo_natureza_restricao.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_tracao ON tb_veiculo.id_tracao = tb_veiculo_tracao.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_modelo ON tb_veiculo.id_modelo = tb_veiculo_modelo.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_marca ON tb_veiculo.id_marca = tb_veiculo_marca.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_especie ON tb_veiculo.id_especie = tb_veiculo_especie.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_condicao ON tb_veiculo.id_condicao = tb_veiculo_condicao.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_combustivel ON tb_veiculo.id_combustivel = tb_veiculo_combustivel.id LEFT OUTER JOIN");
            sb.Append(" tb_veiculo_cabine ON tb_veiculo.id_cabine = tb_veiculo_cabine.id");          
            ds = db.ExecuteQuery(sb.ToString());
            return ds;
        }		
		
		
		public DataSet ListaCampos()
        {

            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            sb.Append("SELECT TABLE_NAME, ORDINAL_POSITION, ");
            sb.Append(" COLUMN_NAME, DATA_TYPE, IS_NULLABLE ");
            sb.Append(" FROM INFORMATION_SCHEMA.COLUMNS");
            sb.Append(" WHERE TABLE_NAME = 'tb_veiculo'");
            ds = db.ExecuteQuery(sb.ToString());

            return ds;

        }

		public DataSet DropdownList()
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
			sb.Append("SELECT ");
			sb.Append(" id ");
            sb.Append(", id_cadastro ");  
				sb.Append(", id_marca ");  				
				sb.Append(", id_modelo ");  				
				sb.Append(", id_categoria ");  				
			sb.Append(" FROM tb_veiculo ");           
			sb.Append(" ORDER BY id_marca ");
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_VEICULO_DROPDOWNLIST");  
            return ds;
        }

        public DataSet DropdownList(String Where)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            db.CreateParameter("@Where", SqlDbType.VarChar, Where);
			sb.Append("SELECT ");
			sb.Append(" id ");

            sb.Append(", id_cadastro ");  	
			sb.Append(", id_marca ");  				
			
			
			sb.Append(", id_modelo ");  				
			
			
			sb.Append(", id_categoria ");  				
			sb.Append(" FROM tb_veiculo ");
			sb.Append(string.Format(" WHERE {0} ",Where));
			sb.Append(" ORDER BY id_marca ");
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_VEICULO_DROPDOWNLIST");
            return ds;
        }
		
		  public DataSet DropdownList(String Where, String OrderBy)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            db.CreateParameter("@Where", SqlDbType.VarChar, Where);
			sb.Append("SELECT ");
			sb.Append(" id ");
            sb.Append(", id_cadastro ");  
			sb.Append(", id_marca ");  				
			sb.Append(", id_modelo ");  				
			sb.Append(", id_categoria ");  				
			sb.Append(" FROM tb_veiculo ");
			sb.Append(string.Format(" WHERE {0} ORDER BY {1}",Where,OrderBy));			
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_VEICULO_DROPDOWNLIST");
            return ds;
        }

	}
	#endregion
}

